/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.igorov.efficientsoft.business.gestorpedido;

import com.igorov.efficientsoft.dataaccess.domain.PedidoDAO;
import com.igorov.efficientsoft.dataaccess.model.TpedidoVO;
import com.igorov.efficientsoft.services.PedidoDTO;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author igorov
 */
public class GestorPedidoImpl implements GestorPedido{

    private PedidoDAO pedidoDAO;

    public PedidoDAO getPedidoDAO() {
        return pedidoDAO;
    }

    public List<PedidoDTO> getAllByUsuario(int codUsuario) {
        List<TpedidoVO> tpedidoVOs = pedidoDAO.getAllByUsuario(codUsuario);
        List<PedidoDTO> pedidoDTOs = new LinkedList<PedidoDTO>();
        
        for (Iterator<TpedidoVO> it = tpedidoVOs.iterator(); it.hasNext();) {
            TpedidoVO tpedidoVO = it.next();
            PedidoDTO pedidoDTO = new PedidoDTO(
                                    tpedidoVO.getNcodPed(),
                                    tpedidoVO.getTcliente().getNcodCli(),
                                    tpedidoVO.getDfecPed(),
                                    tpedidoVO.getDpreTot(),
                                    tpedidoVO.getEcondVen(),
                                    tpedidoVO.getEformPag(),
                                    tpedidoVO.getTdiasCobrar(),
                                    tpedidoVO.isLestado(),
                                    tpedidoVO.isLpedEntregado(),
                                    tpedidoVO.getNcodUsu(),
                                    tpedidoVO.getDtotPagado());
            pedidoDTO.setNombreCliente(tpedidoVO.getTcliente().getCnomCli() + " " + tpedidoVO.getTcliente().getCapePat());
            pedidoDTOs.add(pedidoDTO);
        }
        
        return pedidoDTOs;
    }

    public PedidoDTO getByNumeroPedido(int numeroPedido) {
        TpedidoVO tpedidoVO = pedidoDAO.getByNumeroPedido(numeroPedido);
        if (tpedidoVO == null) {
            return null;
        }
        else{
            PedidoDTO pedidoDTO = new PedidoDTO(
                                    tpedidoVO.getNcodPed(),
                                    tpedidoVO.getTcliente().getNcodCli(),
                                    tpedidoVO.getDfecPed(),
                                    tpedidoVO.getDpreTot(),
                                    tpedidoVO.getEcondVen(),
                                    tpedidoVO.getEformPag(),
                                    tpedidoVO.getTdiasCobrar(),
                                    tpedidoVO.isLestado(),
                                    tpedidoVO.isLpedEntregado(),
                                    tpedidoVO.getNcodUsu(),
                                    tpedidoVO.getDtotPagado());
            return pedidoDTO;
        }
    }
    
    
    public void setPedidoDAO(PedidoDAO pedidoDAO) {
        this.pedidoDAO = pedidoDAO;
    }
    
    public void deleteById(int i) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void deleteByIndex(int index) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<PedidoDTO> getAll() {
        List<TpedidoVO> tpedidoVOs = pedidoDAO.getAll();
        List<PedidoDTO> pedidoDTOs = new LinkedList<PedidoDTO>();
        
        for (Iterator<TpedidoVO> it = tpedidoVOs.iterator(); it.hasNext();) {
            TpedidoVO tpedidoVO = it.next();
            PedidoDTO pedidoDTO = new PedidoDTO(
                                    tpedidoVO.getNcodPed(),
                                    tpedidoVO.getTcliente().getNcodCli(),
                                    tpedidoVO.getDfecPed(),
                                    tpedidoVO.getDpreTot(),
                                    tpedidoVO.getEcondVen(),
                                    tpedidoVO.getEformPag(),
                                    tpedidoVO.getTdiasCobrar(),
                                    tpedidoVO.isLestado(),
                                    tpedidoVO.isLpedEntregado(),
                                    tpedidoVO.getNcodUsu(),
                                    tpedidoVO.getDtotPagado());
            pedidoDTO.setNombreCliente(tpedidoVO.getTcliente().getCnomCli() + " " + tpedidoVO.getTcliente().getCapePat());
            pedidoDTOs.add(pedidoDTO);
        }
        
        return pedidoDTOs;
    }

    public PedidoDTO getById(int voId) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public PedidoDTO getByIndex(int indice) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getIdAtIndex(int indice) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getIndexOf(int voId) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void saveOrUpdate(PedidoDTO o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void updateListVo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
